package com.video.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @author baoshuai
 * @date 2022-05-14  13:53
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    /**Swagger会帮助我们生成接口文档
     * 1.配置生成的文档信息
     * 配置生成规则*/
    /**
     * Docket封装接口文档信息
     */
    @Bean()
    public Docket getDocket(){
        ApiInfoBuilder builder = new ApiInfoBuilder();
        builder.title("littleFox后端接口说明")//链式调用
                .description("此文档详细说明了video项目后端接口规范...")
                        .version("v 1.0.0")
                                .contact(new Contact("","",""));
        ApiInfo info = builder.build();
        //如何获取一个接口对象
        //new 接口 需要在构造器后的{}实现接口的所有抽象方法
        //new 子类、实现类
        //工厂模式
        Docket docket = new Docket(DocumentationType.SWAGGER_2)//指定文档风格
                .apiInfo(info)//指定生成的文档信息（标题、版本、作者）      链式调用
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.video.controller"))//指定在哪个路径
                .paths(PathSelectors.any())//指定哪些路径需要
                .build();
        return docket;
    }
}
